CC = gcc
CFLAGS = -g -Wall

PROGRAMS = tcpServer udpServer tcpClient udpClient dataHandler interfaceUser tcpClientTests

all: $(PROGRAMS)
	
DebugUtils.o: DebugUtils.h DebugUtils.c
DataHandler.o: DataHandler.h DataHandler.c
InterfaceUser.o: InterfaceUser.h InterfaceUser.c
TCPFarfetchServer.o: TCPFarfetchServer.h TCPFarfetchServer.c
TCPFarfetchClient.o: TCPFarfetchClient.h TCPFarfetchClient.c
UDPFarfetchServer.o: UDPFarfetchServer.c

DataHandler: DebugUtils.o DataHandler.c
	$(CC) -o dataHandler DebugUtils.o DataHandler.c
	
UDPServer: DebugUtils.o DataHandler.o UDPFarfetchServer.c
	$(CC) -o udpServer DebugUtils.o DataHandler.o UDPFarfetchServer.c
	./udpServer

UDPClient: 
	$(CC) -o udpClient InterfaceUser.c
	./udpClient

TCPServer: DebugUtils.o DataHandler.o TCPFarfetchServer.c
	$(CC) -o tcpServer DebugUtils.o DataHandler.o TCPFarfetchServer.c
	./tcpServer
	
TCPClient: 
	$(CC) -o tcpClient InterfaceUser.c
	./tcpClient

TCPClientTests: 
	$(CC) -o tcpClientTests TCPFarfetchClientTests.c
	
UDPClientTests: 
	$(CC) -o udpClientTests UDPFarfetchClientTests.c

clean:
	rm -f *.o *~ $(PROGRAMS)